package cn.yzgy.yzgyoa.ucenter.service;

import cn.yzgy.yzgyoa.ucenter.dto.UserDTO;
import cn.yzgy.yzgyoa.ucenter.entity.SysUser;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 *  服务类
 * </p>
 *
 * @author Yqsen
 * @since 2019-08-20
 */
public interface ISysUserService extends IService<SysUser> {
    /**
     * 根据用户名获取用户登录信息对象
     * @param userName 用户名
     * @return 用户登录信息对象或null
     */
    SysUser getUserByUserName(String userName);

    /**
     * 查询所有列表数据
     * @param ipage 页面
     * @param num 从第num条数据开始查询
     * @param size 查询size条数据
     * @return 用户数据页
     */
    IPage<UserDTO> queryAllUserDTO(QueryWrapper<UserDTO> wrapper,IPage<UserDTO> ipage, Integer num, Integer size);

    /**
     * 获取展示数据总条数
     * @return 展示数据总条数
     */
    String countData();

    /**
     * 查重
     * @param sysUser 用户对象
     * @return 是否重复
     */
    int check(SysUser sysUser);

    /**
     * 添加数据
     * @param sysUser 用户对象
     * @return 新增数量
     */
    int addSysUser(SysUser sysUser);

    /**
     * user表相关
     * @param ipage 页面
     * @param wrapper 条件集
     * @return 页面
     */
    IPage<SysUser> queryAll(IPage<SysUser> ipage, QueryWrapper<SysUser> wrapper);


    /**
     * 根据主键删除数据
     * @param result 主键集合
     * @return 删除数量
     */
    int delSysUser(List<String> result);

    /**
     * 重置密码
     * @param psw 密码
     * @param salt 加密值
     * @param userId 用户ID
     * @return  重置条数
     */
    int resetPwd(String psw,String salt,String userId);

    /**
     * 根据用户对象修改数据
     * @param sysUser 用户对象
     * @return 修改数据条数
     */
    int changeInfo(SysUser sysUser);

    /**
     * 修改数据状态
     * @param result 主键集合
     * @param way 数据操作方式
     * @return 修改数据条数
     */
    int updateData(String result, String way);
}
